### プロジェクト29 IRリモコン制御 **1. 説明** IRリモコンはIR信号を使ってLEDを制御します。これにより、LEDの制御プロセスが大幅に簡素化されます。 **2. 動作原理** ![](media/B113.png) このプロジェクトでは、約38Kのキャリア周波数を変調に使用することが多いです。 IRリモコンシステムは変調、送信、受信を含みます。データを変調して送信することで、伝送効率が向上し、消費電力が削減されます。 一般的に、キャリア変調の周波数は30kHz~60kHzの範囲内(通常は38kHz)です。矩形波のデューティ比は1/3で、下図のように送信側の455kHz水晶発振器によって決まります。 この端の水晶発振器には整数分周が必須で、周波数係数は通常12と評価されます。したがって、455kHz÷12 ≈ 37.9kHz ≈ 38kHzとなります。 38kHzキャリア(完全)送信図: ![](media/B114.jpg) - **キャリア周波数:** 38kHz - **波長:** 940nm - **受信角度:** 90° - **制御距離:** 6m **リモコンボタンの回路図:** ![](media/B115.png) **3. 配線図** ![](media/B116.png) **4. テストコード** 1. 基本ブロックを2つドラッグします。 2. 「IR Remote」から「IR remote init」ブロックを見つけてドラッグし、ピンをIO19に設定します。「serial」から「baud rate」ブロックを追加し、9600に設定します。 ![](media/B117.png) 3. 「if」ブロックをドラッグし、その条件に「Received data」を設定します。IRモジュールがデータを受信した時のみ、「if」内のコードブロックが実行されます。 ![](media/B118.png) 4. もう一つ「if」ブロックをドラッグし、条件を「Read the data > 0」に設定します。この条件が満たされた場合のみ、シリアルポートがデータの出力を開始します。 このセンサーは非常に高速に動作するため、制御ボタンを押している間にコードが2回以上実行されることがあります。しかし、同じコマンドの2回目は0の値を送信するため、重複を避けるために「>」ブロックが必要です。 ![](media/B119.png) 5. 「then」の後に「serial print」ブロックを追加し、「IR remote」モジュールから読み取ったデータを「warp」モードで出力するよう設定します。 ![](media/B120.png) 6. 最後に、実行後にデータをリフレッシュすることを忘れないでください。 ![](media/B121.png) **完成コード:** ![](media/B122.png) **5. テスト結果** 配線を接続しコードをアップロードした後、シリアルモニターを開き、ボーレートを9600に設定します。リモコンのボタンを押すと、16進数の値が表示されます。 ![](media/B123.png) **6. 拡張コード** この拡張コードでは、IRリモコンスイッチで制御されるライトを作成します。OKボタンを押すとLEDが点灯し、再度押すと消灯します。 この繰り返し操作を実現するために、変数「item」がコード全体で重要です。初回はitem = 0なので、「else」内のコードが実行され1に再代入されます。2回目はitem = 1なので、「if」ブロックが実行され0に再代入されます。 **配線図:** ![](media/B124.png) **コード:** ![](media/B125.png) **7. コード説明** 1. 受信ピンを設定した後、IRリモコンモジュールを初期化します。 ![](media/B126.png) 2. センサーがデータを受信したかどうかを判定します。受信していれば、関連するコードブロックが実行されます。 ![](media/B127.png) 3. IRリモコンから受信したデータを読み取ります。 ![](media/B128.png) 4. 受信処理が完了した後、受信データをリフレッシュします。 ![](media/B129.png)